home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / mach-h720x / include / mach / entry-macro.S < prev    next >
Encoding:
Text File  |  2008-12-24  |  1.8 KB  |  67 lines

  1. /*
  2.  * arch/arm/mach-h720x/include/mach/entry-macro.S
  3.  *
  4.  * Low-level IRQ helper macros for Hynix HMS720x based platforms
  5.  *
  6.  * This file is licensed under  the terms of the GNU General Public
  7.  * License version 2. This program is licensed "as is" without any
  8.  * warranty of any kind, whether express or implied.
  9.  */
  10.  
  11.         .macro  disable_fiq
  12.         .endm
  13.  
  14.         .macro  get_irqnr_preamble, base, tmp
  15.         .endm
  16.  
  17.         .macro  arch_ret_to_user, tmp1, tmp2
  18.         .endm
  19.  
  20.         .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
  21. #if defined (CONFIG_CPU_H7201) || defined (CONFIG_CPU_H7202)
  22.         @ we could use the id register on H7202, but this is not
  23.         @ properly updated when we come back from asm_do_irq
  24.         @ without a previous return from interrupt
  25.         @ (see loops below in irq_svc, irq_usr)
  26.         @ We see unmasked pending ints only, as the masked pending ints
  27.         @ are not visible here
  28.  
  29.         mov     \base, #0xf0000000           @ base register
  30.         orr     \base, \base, #0x24000           @ irqbase
  31.         ldr     \irqstat, [\base, #0x04]        @ get interrupt status
  32. #if defined (CONFIG_CPU_H7201)
  33.         ldr    \tmp, =0x001fffff
  34. #else
  35.         mvn     \tmp, #0xc0000000
  36. #endif
  37.         and     \irqstat, \irqstat, \tmp        @ mask out unused ints
  38.         mov     \irqnr, #0
  39.  
  40.         mov     \tmp, #0xff00
  41.         orr     \tmp, \tmp, #0xff
  42.         tst     \irqstat, \tmp
  43.         addeq   \irqnr, \irqnr, #16
  44.         moveq   \irqstat, \irqstat, lsr #16
  45.         tst     \irqstat, #255
  46.         addeq   \irqnr, \irqnr, #8
  47.         moveq   \irqstat, \irqstat, lsr #8
  48.         tst     \irqstat, #15
  49.         addeq   \irqnr, \irqnr, #4
  50.         moveq   \irqstat, \irqstat, lsr #4
  51.         tst     \irqstat, #3
  52.         addeq   \irqnr, \irqnr, #2
  53.         moveq   \irqstat, \irqstat, lsr #2
  54.         tst     \irqstat, #1
  55.         addeq   \irqnr, \irqnr, #1
  56.         moveq   \irqstat, \irqstat, lsr #1
  57.         tst     \irqstat, #1               @ bit 0 should be set
  58.         .endm
  59.  
  60.         .macro  irq_prio_table
  61.         .endm
  62.  
  63. #else
  64. #error hynix processor selection missmatch
  65. #endif
  66.  
  67.